1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package com.google.common.collect;
16
17 import com.google.caliper.BeforeExperiment;
18 import com.google.caliper.Benchmark;
19 import com.google.common.collect.HashMultiset;
20 import com.google.common.collect.Multiset;
21
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Random;
25
26
27
28
29
30
31 public class HashMultisetAddPresentBenchmark {
32 private static final int ARRAY_MASK = 0x0ffff;
33 private static final int ARRAY_SIZE = 0x10000;
34 List<Multiset<Integer>> multisets = new ArrayList<Multiset<Integer>>(0x10000);
35 int[] queries = new int[ARRAY_SIZE];
36
37 @BeforeExperiment
38 void setUp() {
39 Random random = new Random();
40 multisets.clear();
41 for (int i = 0; i < ARRAY_SIZE; i++) {
42 HashMultiset<Integer> multiset = HashMultiset.<Integer>create();
43 multisets.add(multiset);
44 queries[i] = random.nextInt();
45 multiset.add(queries[i]);
46 }
47 }
48
49 @Benchmark int add(int reps) {
50 int tmp = 0;
51 for (int i = 0; i < reps; i++) {
52 int j = i & ARRAY_MASK;
53 tmp += multisets.get(j).add(queries[j], 4);
54 }
55 return tmp;
56 }
57 }